﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Knights.Objeto.Tecnicas
{
    abstract class TecnicaOfensiva : Tecnica
    {
        private int Infinito = 1000000;

        protected int danio;
        protected int aleatorio;
        protected Random random;

        public TecnicaOfensiva(Caballero caballero, string nombre, int costo)
            : base(caballero, nombre, costo)
        {
            this.danio = miCaballero.Danio;
            aleatorio = danio;
            random = new Random();
        }

        public override void Activar() { }  //probar

        public abstract void Activar(Caballero caballero);

        public void AtacarEnemigo(int danio, Caballero unCaballero)
        {
            int danioTotal = danio - unCaballero.Armadura * danio / 1200;
            unCaballero.Salud -= danioTotal;

            mensaje = miCaballero.Nombre + "->"+nombre+"(" + nivel + ")[" + danioTotal + "]->" + unCaballero.Nombre;
        }

        public bool EstaInmune(Caballero unCaballero)
        {
            if (unCaballero.Estado == Estado.Inmune)
            {
                mensaje = "No puede ser atacado";
                return true;
            }
            else
                return false;
        }

        public bool ChanceCritico()
        {
            bool chance = false;
            aleatorio = random.Next(danio);
            int proba = (int)(100 / miCaballero.Critico);
            if (aleatorio % proba == 0)
                chance = true;
            return chance;
        }

        public bool ChanceResistencia(Caballero unCaballero)
        {
            bool chance = false;
            aleatorio = random.Next(danio);

            int proba = (int)(100 / unCaballero.Resistencia);
            if(unCaballero.Resistencia == 0)
                proba = Infinito;

            if (aleatorio % proba == 0)
            {
                chance = true;
                mensaje = "-->" + nombre + "(" + nivel + ") Resistido!";
            }
            return chance;
        }
    }
}
